#ifndef _DS_DUL_LIST_H
#define _DS_DUL_LIST_H

#include "../ds_types.h"

extern Status dullist_init(dul_list *dl);
extern Status dullist_destroy(dul_list *dl);
extern Status dullist_clear(dul_list dl);
extern Bool dullist_empty(dul_list dl);
extern size_t dullist_length(dul_list dl);
extern void *dulist_getelem(dul_list dl, size_t i);
extern size_t dullist_locateelem(dul_list dl, const void *e,
		int cmp(const void *e1, const void *e2),
		size_t struct_size);
extern Status dullist_insert(dul_list dl, size_t i, const void *e,
		size_t struct_size);
extern Status dullist_delete(dul_list dl,size_t i, void *e, size_t struct_size);
extern void dullist_traverse(dul_list dl, Bool visit(const void *));
extern void dullist_traverseback(dul_list dl, Bool visit(const void *));

#endif
